import request from '@/utils/request'

/**
 * 获取海关贸易数据列表
 * @param {Object} params - 查询参数
 * @returns {Promise} 返回Promise对象
 */
export function getCustomsTradeList(params) {
  return request({
    url: '/customs/search',
    method: 'get',
    params,
    timeout: 15000,
    headers: {
      'Accept': 'application/json'
    }
  });
}

/**
 * 获取符合条件的海关贸易数据记录数量
 * @param {Object} params - 查询参数
 * @returns {Promise} 返回Promise对象
 */
export function getCustomsTradeCount(params) {
  
  return request({
    url: '/customs/count',
    method: 'post',
    data: params,
    headers: {
      'Content-Type': 'application/json'
    }
  });
}

/**
 * 获取用户余额信息
 * @returns {Promise} 返回Promise对象
 */
export function getUserBalanceInfo() {
  return request({
    url: '/api/balance/info',
    method: 'get'
  })
}

/**
 * 获取产品关键词列表
 * @returns {Promise} 返回Promise对象
 */
export function getProductKeywords() {
  return request({
    url: '/customs/product-keywords',
    method: 'get',
    timeout: 10000,
    headers: {
      'Accept': 'application/json'
    }
  });
}

/**
 * 获取海关编码列表
 * @returns {Promise} 返回Promise对象
 */
export function getHsCodes() {
  return request({
    url: '/customs/hs-codes',
    method: 'get',
    timeout: 10000,
    headers: {
      'Accept': 'application/json'
    }
  });
}

/**
 * 导出海关数据
 * @param {Object} params - 导出参数
 * @returns {Promise} 返回Promise对象
 */
export function exportCustomsTradeInfo(params) {
  
  // 分离参数，exportCount作为URL参数，其他参数放在请求体
  const exportCount = params.exportCount;
  const { exportCount: _, ...bodyParams } = params;
  
  return request({
    url: `/customs/export?exportCount=${exportCount}`,
    method: 'post',
    data: bodyParams,
    responseType: 'blob',
    headers: {
      'Content-Type': 'application/json',
      'Accept': 'application/octet-stream, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
    },
    timeout: 60000
  });
}